In an Internet Protocol (IP) network, connected devices may be assigned an IP address for identifying a device's communications over the network. Legacy networks and devices may utilize Internet Protocol version 4 (IPv4) addressing, which includes a dotted decimal format IP address field. The IPv4 address contains four numbers, each ranging from 0 to 255 in decimal format (e.g. 10.1.322.65), which provide a maximum of 4,294,967,296 possible addresses. With the growth in a network's size and in the number of devices connected to the network, unassigned IPv4 addresses available for use by new devices may reach a critical level.
One solution for dealing with this problem has been to divide a network into smaller local networks, each using its own isolated IPv4 address space. Within a local network, communications may be routed unfettered between devices within the local network, because each connected device is identified with a unique IP address. However, devices in different local networks may have the same IP address, and thus communications across the different local networks (e.g., in the global network) may require special handling to avoid communications being routed to the wrong device. One solution to handle global routing is to use network address translation (NAT) for messages routed between local networks.
With NAT, multiple devices on a local (e.g., internal) network look like a single IPv4 address to devices on other local (e.g., external) networks. Devices on an internal network behind a NAT device may each have an internal IPv4 address that is only used on the internal network. When one of these devices transmits packets outside of the internal network, the NAT device modifies the packets to replace the device's internal (e.g., local) IPv4 address with an external (global) IPv4 address. The external IPv4 address is shared by the entire internal network such that all packets sent from devices in the internal network to the external network appear to come from the NAT device itself, which has been assigned the external IPv4 address on the external network. In reply to these outbound packets with the external IPv4 address, inbound packets received from the external networks will likewise be addressed to the shared external IPv4 address. The NAT device keeps track of which device originally transmitted outbound packets to form an address mapping so that inbound packets can be reverse translated, replacing the external IPv4 address with the correct corresponding internal IPv4 address. The NAT device then forwards the translated inbound packets to the correct device. The address mapping by a NAT device may be referred to as stateful translation, because the NAT device must store the status of communications and other information in memory to perform the reverse translation and route the inbound packets to the correct device on the internal network. While NAT is useful, NAT schemes may not scale well for large network environments. As a network grows, NAT devices are required to perform an increasing number of address mappings to support an increasing number of transactions. However, hardware and memory are limited in size. Further, with the increase in memory size, comes a decrease in memory speed. The size and speed limits impose a practical limit on the number of address mappings a NAT device can perform efficiently.